package juc.completablefuture.methods.create;

/**
 * @ClassName SupplyAsyncWithExecutorExample
 * @PackageName juc.completablefuture.methods.create
 * @projectName myThread
 * @Description 
 * @Author games
 * @Date 2025/8/29 上午10:54
 * @Version 1.0
 */
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class SupplyAsyncWithExecutorExample {
    public static void main(String[] args) {
        /**
         * 作用：执行一个有返回值的异步任务，并指定一个自定义的执行器。
         * 返回值：一个 CompletableFuture<U> 对象，表示异步任务的完成状态和结果。
         * 特点：允许你指定一个特定的执行器来执行任务，而不是使用默认的执行器。
         */
        ExecutorService executor = Executors.newFixedThreadPool(2);

        CompletableFuture<String> cf = CompletableFuture.supplyAsync(() -> {
            System.out.println("Running in " + Thread.currentThread().getName());
            return "Hello World";
        }, executor);

        // 获取任务结果
        String result = cf.join();
        System.out.println(result); // 输出: Hello World

        // 关闭执行器
        executor.shutdown();
    }
}